#   -*-  coding:utf-8  -*-
'''测试套件   unittest  主做执行  '''
import unittest
from  BSTestRunner  import BSTestRunner #测试报告模板   html  第一种
from HTMLTestRunner  import HTMLTestRunner  #测试模板  html  第二种
#以后的工作种二选其一即可
import   time#做时间戳
import  smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import os
'''run  不调用这个项目种的任何方法   '''
'''发送邮件'''
def  getEmail():
    url = r'../ref/' + str(os.listdir('../ref/')[-1])
    file = open(url, 'rb')
    neirong = file.read()
    file.close()
    #服务器地址  使用发送邮箱是哪个公司的  smtp.163.com   smtp.qq.com
    smtpserver = 'smtp.163.com'
    #准备自己邮箱的账号和密码
    username = 'zcd18904815180@163.com'
    password = 'BRTQIWSEZPPBIFZR'
    #接受和发送邮箱
    fasong = 'zcd18904815180@163.com'
    jieshou = ['18904815180@163.com','zcd18904815180@163.com']
    #测试的主题
    zhuti = str(time.strftime('%Y_%d_%m_%Y_%M_%S',time.localtime())) + '测试报告'
    #构建邮件内容
    mms = MIMEMultipart()#带附件的格式发送
    mms.attach(MIMEText(neirong,'html','utf-8'))#以html个格式发送过去
    mms['From'] = fasong#发送邮箱
    mms['To'] = ','.join(jieshou)#接收邮箱
    mms['Subject'] = zhuti
    #开始发送
    smtp = smtplib.SMTP_SSL(smtpserver,465)#需要传入两个参数  服务器地址   服务器使用的端口号  465
    #向服务器表明身份
    smtp.helo()
    #等待服务器返回结果
    smtp.ehlo()
    #输入用户名和密码
    smtp.login(user=username,password=password)
    #把邮件发送出去
    print('开始发送')
    smtp.sendmail(fasong,jieshou,mms.as_string())
    print('发送完成')

if __name__ == '__main__':
    #准备读取测试案例的路径../case/
    case = unittest.defaultTestLoader.discover('../case/',pattern='case*.py')
    #测试报告生成的位置
    ref_url = '../ref/'  + str(time.strftime('%Y_%m_%d_%H_%M_%S',time.localtime()) + '_BaoGao.html')
    #读取文件开始执行
    with  open(ref_url,'wb') as  f:
        runner = HTMLTestRunner(stream=f,title='测试报告',description='报告')
        runner.run(case)#执行内容
        '''在测试套件运行中控制台在输出的时候   . 代表执行通过  F断言错误    E代码错误'''
    time.sleep(5)
    #发送邮件
    getEmail()